#pragma once

class CAgentUtils
{
public:
    static int Random(int min, int max);
    static void Seed();
};

class CSysTime
{
public:
    CSysTime();
    CSysTime(clock_t c);
    ~CSysTime();
    double GetSeconds();
    static CSysTime Now();
    static CSysTime Span(int s, int ms);

    // Operators
    operator double() { return (double)m_clock; }
    CSysTime& operator=(const CSysTime& other);
    bool operator==(const CSysTime& other) { return m_clock == other.m_clock; }
    bool operator<(const CSysTime& other) { return m_clock < other.m_clock; }
    bool operator<=(const CSysTime& other) { return m_clock <= other.m_clock; }
    bool operator>(const CSysTime& other) { return m_clock > other.m_clock; }
    bool operator>=(const CSysTime& other) { return m_clock >= other.m_clock; }
    CSysTime& operator+=(const CSysTime& other);
    const CSysTime operator+(const CSysTime& other);
    CSysTime& operator-=(const CSysTime& other);
    const CSysTime operator-(const CSysTime& other);
    const CSysTime operator/(const CSysTime& other);

protected:
    clock_t m_clock;
};